package org.meetunexpectedly.util;


import ws.schild.jave.MultimediaObject;
import ws.schild.jave.info.MultimediaInfo;

import java.net.URL;

/**
 * @Description: 文件工具类
 * @Author: pupil
 * @Date: 2024/08/18 下午 8:14
 */
public class FileUtil {

    /**
     * 获取视频时长
     * @param videoUrl 视频源
     * @return
     */
    public static String getVideoDuration(String videoUrl) {
        // length[0]：存储视频的总秒数  length[1]：存储格式化后的时间字符串
        String[] length = new String[2];
        try {
            // 获取视频的url
            URL source = new URL(videoUrl);
            // 解析视频获取时长
            MultimediaObject instance = new MultimediaObject(source);
            MultimediaInfo result = instance.getInfo();
            // 将视频时长转换成秒
            Long ls = result.getDuration() / 1000;
            length[0] = String.valueOf(ls);
            // 格式化时间
            Integer hour = (int) (ls / 3600); //小时
            Integer minute = (int) (ls % 3600) / 60; // 分钟
            Integer second = (int) (ls - hour * 3600 - minute * 60); // 剩余秒数
            String hr = hour.toString();
            String mi = minute.toString();
            String se = second.toString();
            // 补0，确保每个时间段都以两个数字表示
            if (hr.length() < 2) {
                hr = "0" + hr;
            }
            if (mi.length() < 2) {
                mi = "0" + mi;
            }
            if (se.length() < 2) {
                se = "0" + se;
            }
            // 判断是否有小时
            String noHour = "00";
            if (noHour.equals(hr)) {
                // 没有小时，返回 分钟:秒 格式的时间字符串
                length[1] = mi + ":" + se;
            } else {
                // 返回 小时:分钟:秒 格式的时间字符串
                length[1] = hr + ":" + mi + ":" + se;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        // 返回格式化后的时间字符串
        return length[1];
    }
}
